/**
 * Created by Administrator on 2019/8/23.
 */


function isWeiXin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == 'micromessenger'){
        return true;
    }else{
        return false;
    }
}

/**
 * 加载图片，直到加载完成后才调用回调函数
 * @param url 后面读取图片流的url
 * @param callback 回调函数
 */
function loadImage(url, callback) {
    var  img = new Image();
    img.src = url;
    var timer = setInterval(function() {
        if (img.complete) {
            callback(img);
            clearInterval(timer);
        }
    }, 50);
}
function testFun(img){
    console.log('into testFun');
}
//调用上面的方法，代码如下
loadImage(url+'?datetime='+new Date().getTime(),testFun);

//验证手机号
function isCardNo(telno)
{
    // 验证13 、15、18 开头的手机号
    var reg = /^0?(13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}$/;
    if(reg.test(telno) === false)
    {
        alert("手机号码输入有误");
        return  false;
    }
}

//验证身份证号码
function isCardNo(card)
{
    // 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    if(reg.test(card) === false)
    {
        alert("身份证输入不合法");
        return  false;
    }
}
//转义html标签
function HtmlEncode(text) {
    return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')
}

//清除左空格/右空格

function ltrim(s){ return s.replace( /^(\s*|　*)/, ""); }
function rtrim(s){ return s.replace( /(\s*|　*)$/, ""); }
//2、判断是否以某个字符串开头

String.prototype.startWith = function (s) {
    return this.indexOf(s) == 0
}
//3、判断是否以某个字符串结束
String.prototype.endWith = function (s) {
    var d = this.length - s.length;
    return (d >= 0 && this.lastIndexOf(s) == d)
}


//替换全部

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2)
}
//2、清除空格

String.prototype.trim = function() {
    var reExtraSpace = /^\s*(.*?)\s+$/;
    return this.replace(reExtraSpace, "$1")
}
//字符串长度截取函数
function cutstr(str, len) {
    var temp,
        icount = 0,
        patrn = /[^\x00-\xff]/，
        strre = "";
    for (var i = 0; i < str.length; i++) {
        if (icount < len - 1) {
            temp = str.substr(i, 1);
            if (patrn.exec(temp) == null) {
                icount = icount + 1
            } else {
                icount = icount + 2
            }
            strre += temp
        } else {
            break;
        }
    }
    return strre + "..."
}

//1、禁用右键单击功能

$(document).ready(function() {
    $(document).bind("contextmenu",function(e) {
        alert("sorry! No right-clicking!");
        return false;
    });
});

//2、屏蔽F5刷新
$(document).ready(function() {
    $(document).bind("keydown",function(e){
        e=window.event||e;
        if(e.keyCode==116){
            e.keyCode = 0;
            return false;
        }
    });
});

//页面load方法
$().ready(function() {

})
//div隐藏操作
// div是否隐藏
function isHideMenu(){
    return $("#menuContent").is(":hidden")
}
//// 隐藏div
mainFrameset.hide();
// 显示div
mainFrameset.show();


//获取对象
//通过id获得
$("#menuContent");
//通过class获得
$(".menuContent");

//属性设置
// 设置value
$("#menuContent").val("value");
// 设置css
$(".handle").css("marginLeft",5);
// 设置属性
$("img").attr("width","180");
//手动触发事件
$('.wBox_submit').trigger("click");

//加载外部内容的jQuery代码
$("#content").load("fileoutside.html", function(response, status, my) {

    // error handling

    if(status == "error") {

        $("#content").html("An error occured: " + my.status + " " + my.statusText);

    }

});

/**
 *
 * @descrition:判断是否是合理的IP地址
 * @param:str->待验证的IP地址
 * @return :true合理的IP地址
 *
 */
var isIP = function (str) {
    var pattern = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

    return pattern.test(str);
}

/**
 *
 * @descrition:判断输入的参数是否是国内合法的邮编地址(ps:国内不包含国外的邮编)
 * @link: http://www.youbianku.com/%E9%A6%96%E9%A1%B5
 * @param: str为待验证的邮编号码
 * @return: true表示为合法的邮编号码
 *
 */
var isPostcode = function(str) {
    //国内邮编以0-8开头的6为数字
    var pattern = /^[0-8]\d{5}$/;
    return pattern.test(str);
}

/**
 *
 * @descrition:判断输入的参数是否是个合格的QQ号码
 * @param->str:待验证的参数
 * @return: true验证成功
 */
var isQQ = function(str) {
    /**
     *@descrition:规则
     * 1-9开头，最少5位。
     */
    var pattern = /^[1-9][0-9]{4,}$/
    return pattern.test(str);
}

/**
 *
 * @descrition:判断输入的参数是否是个合格的手机号码，不能判断号码的有效性，有效性可以通过运营商确定。
 * @param:str ->待判断的手机号码
 * @return: true表示合格输入参数
 *
 */
var isCellphone = function(str) {
    /**
     *@descrition:手机号码段规则
     * 13段：130、131、132、133、134、135、136、137、138、139
     * 14段：145、147
     * 15段：150、151、152、153、155、156、157、158、159
     * 17段：170、176、177、178
     * 18段：180、181、182、183、184、185、186、187、188、189
     *
     */
    var pattern =  /^(13[0-9]|14[57]|15[012356789]|17[0678]|18[0-9])\d{8}$/;
    return pattern.test(str);
}

/**
 *
 * @descrition:判断输入的参数是否是个合格标准的邮箱,并不能判断是否有效，有效只能通过邮箱提供商确定。
 * @param:str ->待验证的参数。
 * @return -> true表示合格的邮箱。
 *
 */
var isEmail = function(str){
    /**
     * @descrition:邮箱规则
     * 1.邮箱以a-z、A-Z、0-9开头，最小长度为1.
     * 2.如果左侧部分包含-、_、.则这些特殊符号的前面必须包一位数字或字母。
     * 3.@符号是必填项
     * 4.右则部分可分为两部分，第一部分为邮件提供商域名地址，第二部分为域名后缀，现已知的最短为2位。最长的为6为。
     * 5.邮件提供商域可以包含特殊字符-、_、.
     */
    var pattern = /^([a-zA-Z0-9]+[-_.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[-_.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,6}$/;
    return pattern.test(str);
}

/**
 *
 * @descrition: 这个函数对输入的参数检查时候是合格的身份证号码，其身份证有效性无法判断。检测的颗粒度可以定制。
 * @param->str : 待验证的参数
 * @return : true是合格的身份证   false为不合法的身份证
 *
 */
var checkIdCard = function (num) {
    num = num.toUpperCase();
    var cityCode = {11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 "};
    if(!cityCode[num.substr(0,2)]){
        alert("地址编码错误");
        return false;
    }
    //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
        //alert('输入的身份证号长度不对，或者号码不符合规定！\n15位号码应全为数字，18位号码末位可以为数字或X。');
        return false;
    }
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
    //下面分别分析出生日期和校验位
    var len, re;
    len = num.length;
    if (len == 15) {
        re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
        var arrSplit = num.match(re);
        //检查生日日期是否正确
        var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
        var bGoodDay;
        bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
        if (!bGoodDay) {
            //alert('输入的身份证号里出生日期不对！');
            return false;
        }
        else {
            //将15位身份证转成18位
            //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
            var nTemp = 0, k;
            num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
            for (k = 0; k < 17; k++) {
                nTemp += num.substr(k, 1) * arrInt[k];
            }
            num += arrCh[nTemp % 11];
            return true;
        }
    }
    if (len == 18) {
        re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
        var arrSplit = num.match(re);
        //检查生日日期是否正确
        var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
        var bGoodDay;
        bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
        if (!bGoodDay) {
            //alert(dtmBirth.getYear());
            //alert(arrSplit[2]);
            //alert('输入的身份证号里出生日期不对！');
            return false;
        }
        else {
            //检验18位身份证的校验码是否正确。
            //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
            var valnum;
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
            var nTemp = 0, k;
            for (k = 0; k < 17; k++) {
                nTemp += num.substr(k, 1) * arrInt[k];
            }
            valnum = arrCh[nTemp % 11];
            if (valnum != num.substr(17, 1)) {
                //alert('18位身份证的校验码不正确！应该为：' + valnum);
                return false;
            }
            return true;
        }
    }
    return false;
}


/**
 *
 * @descrition: 测试给定的参数是否全部为中文字符，如"中test"不会通过 。
 * @param->str : 传入的参数，类型为字符串。
 * @return : true表示全部为中文,false为不全是中文，或没有中文。
 *
 */
var isChinese = function (str) {
    var pattern = /^[\u0391-\uFFE5]+$/g;
    return pattern.test(str);
}

/**
 *
 * @descrition : 该函数的功能是判断转入的参数是否为数字类型。
 * @param->o   : 传入的参数，参数可以为任何类型。
 * @return:   true表示为数字，false为非数字
 *
 */

var isNumber = function(o) {
    return !isNaN(o);
}

//使用正则表达式判断ip地址
var ip='20.255.255.255';
re=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
r=re.test(ip);
alert(r);

/**
 * 检查字符串是否为合法QQ号码
 * @param {String} 字符串
 * @return {bool} 是否为合法QQ号码
 */
function isQQ(aQQ) {
    var bValidate = RegExp(/^[1-9][0-9]{4,9}$/).test(aQQ);
    if (bValidate) {
        return true;
    }
    else
        return false;
}
/**
 * 检查字符串是否为合法手机号码
 * @param {String} 字符串
 * @return {bool} 是否为合法手机号码
 */
function isPhone(aPhone) {
    var bValidate = RegExp(/^(0|86|17951)?(13[0-9]|15[012356789]|18[0-9]|14[57])[0-9]{8}$/).test(aPhone);
    if (bValidate) {
        return true;
    }
    else
        return false;
}
/**
 * 检查字符串是否为合法email地址
 * @param {String} 字符串
 * @return {bool} 是否为合法email地址
 */
function isEmail(aEmail) {
    var bValidate = RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(aEmail);
    if (bValidate) {
        return true;
    }
    else
        return false;
}
/**
 * 检查字符串是否是整数
 * @param {String} 字符串
 * @return {bool} 是否是整数
 */
function isInteger(s) {
    var isInteger = RegExp(/^[0-9]+$/);
    return (isInteger.test(s));
}
/*
 判断字符类型
 */
function CharMode(iN) {
    if (iN >= 48 && iN <= 57) //数字
        return 1;
    if (iN >= 65 && iN <= 90) //大写字母
        return 2;
    if (iN >= 97 && iN <= 122) //小写
        return 4;
    else
        return 8; //特殊字符
}
/*
 统计字符类型
 */
function bitTotal(num) {
    modes = 0;
    for (i = 0; i < 4; i++) {
        if (num & 1) modes++;
        num >>>= 1;
    }
    return modes;
}
/*
 返回密码的强度级别
 */
function checkStrong(sPW) {
    if (sPW.length <= 4)
        return 0; //密码太短
    Modes = 0;
    for (i = 0; i < sPW.length; i++) {
        //测试每一个字符的类别并统计一共有多少种模式.
        Modes |= CharMode(sPW.charCodeAt(i));
    }
    return bitTotal(Modes);
}

//for
if(!$.tool.isEmptyArray($data)){
    for(var i=0;i<$data.length;i++){
        console.log($data[i]);
    }
}

